import * as THREE from 'three'
import fmodel from '@/three/mesh/AirBlower'
import eventbus from "@/until/eventbus";
import gsap from "gsap";
var airBlower, jmodel
export default function createMesh() {
    let model = new fmodel()
    let arr = []
    let arr1 = []

    // 当模型加载完毕扇叶转动 AirBlower.js line:23
    eventbus.on('turn', setTimeout(function () {
        let Rmodel = model.Ascene.children[0].children[4].children[0].children[0].children[4]
        gsap.to(Rmodel.rotation, { y: -Math.PI, duration: 20, repeat: -1, ease: 'none' })
    }, 20000))

    // 模拟旋转加位移
    // setTimeout(function () {
    //     let euler = new THREE.Euler(-(Math.PI / 180) * 10, (Math.PI / 180) * 3, -(Math.PI / 180) * 3)
    //     // console.log(euler);
    //     let quaternions = new THREE.Quaternion().setFromEuler(euler)
    //     let m = model.Ascene.children[0].quaternion
    //     quaternions.duration = 10,
    //         quaternions.ease = "none"
    //     gsap.to(m, quaternions)

    //     let mp = model.Ascene.children[0].position
    //     gsap.to(mp, {
    //         // 东西
    //         x: 20,
    //         // 高度
    //         y: 3.5,
    //         // 南北
    //         z: 0.5,
    //         duration: 10
    //     })
    //     setTimeout(function () {
    //         let euler = new THREE.Euler((Math.PI / 180) * 10, -(Math.PI / 180) * 3, (Math.PI / 180) * 3)
    //         // console.log(euler);
    //         let quaternions = new THREE.Quaternion().setFromEuler(euler)
    //         let m = model.Ascene.children[0].quaternion
    //         quaternions.duration = 10,
    //             quaternions.ease = "none"
    //         gsap.to(m, quaternions)
    //         gsap.to(mp, {
    //             // 东西
    //             x: -20,
    //             // 高度
    //             y: -0.5,
    //             // 南北
    //             z: -0.5,
    //             duration: 10
    //         })

    //     }, 10000)
    //     // gsap.to(mp, {
    //     //     // 东西
    //     //     x: -10,
    //     //     // 高度
    //     //     y: -0.5,
    //     //     // 南北
    //     //     z: -0.5,
    //     //     duration:10
    //     // })
    // }, 6000)

    // Serial.vue line:39
    // eventbus.on('axiel', (data) => {
    //     if (arr1.length == 0) {
    //         console.log('ok');
    //         arr1 = data
    //     } else {
    //         // arr 为x,y,z数组
    //         arr = [data[0] - arr1[0], data[1] - arr1[1], data[2] - arr1[2]]
    //         // console.log(arr);
    //         let euler = new THREE.Euler(-(Math.PI / 180) * arr[0], (Math.PI / 180) * arr[2], -(Math.PI / 180) * arr[1])
    //         // console.log(euler);
    //         eventbus.emit('leftaxiel', arr)
    //         let quaternions = new THREE.Quaternion().setFromEuler(euler)
    //         let m = model.Ascene.children[0].quaternion
    //         // console.log('quaternions:', quaternions);
    //         // console.log(model.Ascene.children[0]);
    //         // console.log('m:', m);
    //         // console.log(quaternions);
    //         gsap.to(m, quaternions)
    //     }
    // })

    // 异步循环，将九轴数组中的数据按次序展示
    // async 
    async function e(xarr, yarr, zarr, xv, yv, zv, xa, ya, za) {
        for (let i = 0; i < xarr.length; i++) {
            // await g(xarr, yarr, zarr, xv, xa, i)
            // await gsap.to('.box', {
            let euler = new THREE.Euler(-(Math.PI / 180) * xarr[i], (Math.PI / 180) * zarr[i], -(Math.PI / 180) * yarr[i])
            let quaternions = new THREE.Quaternion().setFromEuler(euler)
            // console.log(quaternions);
            let m = model.Ascene.children[0].quaternion
            // quaternions.duration = 30 / xarr.length,
            // quaternions.duration = 0.05,
            quaternions.duration = 0.18,
            quaternions.ease = "none"
            // let Aarr = [xarr[i].toFixed(2), zarr[i].toFixed(2), yarr[i].toFixed(2), xv[i].toFixed(2), yv[i].toFixed(2), zv[i].toFixed(2), xa[i].toFixed(2), ya[i].toFixed(2), za[i].toFixed(2)]
            let Aarr = [xarr[i], zarr[i], yarr[i], xv[i], yv[i], zv[i], xa[i], ya[i], za[i]]
            eventbus.emit('rotation', Aarr)
            // await gsap.to(m, quaternions)
            await gsap.to(m, quaternions)
        }
    }
    // matt.js line:57
    eventbus.on('9ZYD', (data) => {
        // ch1 倾角X
        let xRarr = data.channel[0].data
        // ch2 倾角Y
        let yRarr = data.channel[1].data
        // ch3 倾角Z
        let zRarr = data.channel[2].data
        // ch4 倾角速度X
        let xVarr = data.channel[3].data
        // ch5 倾角速度Y
        let yVarr = data.channel[4].data
        // ch6 倾角速度Z
        let zVarr = data.channel[5].data
        // ch7 加速度X
        let xAarr = data.channel[6].data
        // ch8 加速度Y
        let yAarr = data.channel[7].data
        // ch9 加速度Z
        let zAarr = data.channel[8].data

        let NineAxiel = {
            xRarr,
            yRarr,
            zRarr,
            xVarr,
            yVarr,
            zVarr,
            xAarr,
            yAarr,
            zAarr,
        }
        // console.log(NineAxiel);
        eventbus.emit('NAxiel', NineAxiel)
        e(xRarr, yRarr, zRarr, xVarr, yVarr, zVarr, xAarr, yAarr, zAarr)
    })

    eventbus.on('GNSS', (data) => {
        let SixAxiel = {}
        // ch1 南北
        SixAxiel.NaSarr = data.channel[0].data
        // ch2 东西
        SixAxiel.EaWarr = data.channel[1].data
        // ch3 高度
        SixAxiel.Heightarr = data.channel[2].data
        // ch4 纬度
        SixAxiel.Latitudearr = data.channel[3].data
        // ch5 经度
        SixAxiel.Longitudearr = data.channel[4].data
        // ch6 高程
        SixAxiel.Elevationarr = data.channel[5].data
        eventbus.emit('SixAxiel', SixAxiel)
        s(SixAxiel)
    })
    async function s(SixAxiel) {
        for (let i = 0; i < SixAxiel.NaSarr.length; i++) {
            let arr = [SixAxiel.NaSarr[i], SixAxiel.EaWarr[i], SixAxiel.Heightarr[i], SixAxiel.Latitudearr[i], SixAxiel.Longitudearr[i], SixAxiel.Elevationarr[i]]
            let m = model.Ascene.children[0].position
            eventbus.emit('gnssData', arr)
            await gsap.to(m, {
                // 东西
                x: arr[1] * 10,
                // 高度
                y: arr[2] * 0.5,
                // 南北
                z: arr[0] * 10,
                // duration: 60 / SixAxiel.NaSarr.length
                duration: 1.2
            })
        }
    }

}
